-
Notifications
You must be signed in to change notification settings - Fork 785
boot: zephyr: kconfig: Default to swap using offset #2266
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
boot/zephyr/Kconfig
Outdated
@@ -397,14 +397,14 @@ config BOOT_VALIDATE_SLOT0_ONCE | |||
|
|||
config BOOT_PREFER_SWAP_OFFSET | |||
bool "Prefer the newer swap offset algorithm" | |||
default y if SOC_FAMILY_NORDIC_NRF |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we make it default for all platforms?
By adding: default y if !$(dt_nodelabel_enabled,scratch_partition)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not been made the default for all platforms due to the sector size requirements, if a device has equal sizes for slot 0 and slot 1 then it will work (but is not ideal) but if it has the swap using move ideal setup of slot 0 being larger than slot 1, it will fail, so has been left as swap using move for default for now
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if a device has equal sizes for slot 0 and slot 1 then it will work (but is not ideal)
Using optimized slot sizes is broken with the latest mcuboot: zephyrproject-rtos/zephyr#88850
It seems, I need to switch to equal slot sizes (at least for NXP) to make it work for all modes, even if it's not optimal.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That has been fixed efa3039 but has not been pulled into zephyr yet
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That has been fixed efa3039 but has not been pulled into zephyr yet
Great! Thank you.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
having a look at frdm_ke17z
it looks like it should work, would be just under 2K for swap status fields so not sure why it throws an error, would suggest enabling debug logs for MCUboot and seeing what is printed, then setting the number of sectors for each slot to the same and seeing what the non-optimal message says
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
having a look at
frdm_ke17z
it looks like it should work, would be just under 2K for swap status fields so not sure why it throws an error, would suggest enabling debug logs for MCUboot and seeing what is printed, then setting the number of sectors for each slot to the same and seeing what the non-optimal message says
For example for frdm_mcxw71, it has Flash total size 1M , 8KB erase and 16B write. Partitioned to:
&flash {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
/* The MCUBoot swap-move algorithm uses the last 2 sectors
* of the primary slot0 for swap status and move.
*/
boot_partition: partition@0 {
reg = <0x0 DT_SIZE_K(64)>;
};
slot0_partition: partition@10000 {
reg = <0x10000 (DT_SIZE_K(416) + DT_SIZE_K(16))>;
};
slot1_partition: partition@7C000 {
reg = <0x7C000 DT_SIZE_K(416)>;
};
storage_partition: partition@E4000 {
reg = <0xE4000 DT_SIZE_K(112)>;
};
};
};
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BTW: Is see another PR fix is coming "boot: bootutil: Fix max image size computation for swap-move and swap-offset" #2283
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All NXP boards were switched to equal size partitions.
May NXP be switched to SWAP_OFFSET too? Or is it still experimental and better to wait until it becomes the default mode for all?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll cobble together a php script in a bit to check slot0 and slot1 sizes for all boards and see if there's any that are not equal and if so message the maintainers and ask about them because would like to set it as default for all
8aaa5b5
to
dc1253b
Compare
To prevent breakage when the default mode changes to swap using offset, any board that is current set up to have more sectors in slot0 has been excluded from the move Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Defaults to the new swap using offset mode, excluding stm32 as these devices are already aligned to swap using move with extra sectors in slot0 Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
dc1253b
to
ed957d4
Compare
Thank you. |
yes, will update that in a future PR |
Defaults to the new swap using offset mode